package com.platform.usercenter.mapper;

import java.util.List;
import com.platform.usercenter.domain.SysOrgDeptUser;
import com.platform.usercenter.domain.vo.SysOrgDeptUserVO;
import org.apache.ibatis.annotations.Param;

/**
 * 用户组织部门岗位Mapper接口
 *
 * @author platform
 * @date 2024-10-24
 */
public interface SysOrgDeptUserMapper
{
    /**
     * 查询用户组织部门岗位
     *
     * @param id 用户组织部门岗位主键
     * @return 用户组织部门岗位
     */
    public SysOrgDeptUser selectSysOrgDeptUserById(Long id);

    /**
     * 查询用户组织部门岗位
     *
     * @param id 用户组织部门岗位主键
     * @return 用户组织部门岗位
     */
    public List<SysOrgDeptUserVO> selectSysOrgDeptUserByUserId(Long userId);
    public List<SysOrgDeptUserVO> selectUserOrgByUserId(Long userId);

    public List<SysOrgDeptUserVO> selectUserDeptByVO(SysOrgDeptUserVO vo);
    public List<SysOrgDeptUserVO> selectListByPostIds(SysOrgDeptUserVO vo);
    public List<SysOrgDeptUserVO> selectUserPostByVO(SysOrgDeptUserVO vo);
    public List<SysOrgDeptUserVO> selectUserRoleByVO(SysOrgDeptUserVO vo);

    public List<Long> selectChildrenDeptIds(@Param("deptId") Long deptId);

    public List<Long> selectChildrenOrgIds(@Param("orgId") Long orgId);

    public List<String> selectUserRoleType(@Param("userId") Long userId,@Param("orgId") Long orgId);

    /**
     * 查询用户组织部门岗位列表
     *
     * @param sysUserInfo 用户组织部门岗位
     * @return 用户组织部门岗位集合
     */
    public List<SysOrgDeptUser> selectSysOrgDeptUserList(SysOrgDeptUser sysUserInfo);

    /**
     * 新增用户组织部门岗位
     *
     * @param sysUserInfo 用户组织部门岗位
     * @return 结果
     */
    public int insertSysOrgDeptUser(SysOrgDeptUser sysUserInfo);
    /**
     * 新增用户组织部门岗位
     *
     * @param sysUserInfo 用户组织部门岗位
     * @return 结果
     */
    public int batchOrgDept(List<SysOrgDeptUser> sysUserInfo);

    /**
     * 修改用户组织部门岗位
     *
     * @param sysUserInfo 用户组织部门岗位
     * @return 结果
     */
    public int updateSysOrgDeptUser(SysOrgDeptUser sysUserInfo);

    /**
     * 删除用户组织部门岗位
     *
     * @param id 用户组织部门岗位主键
     * @return 结果
     */
    public int deleteSysOrgDeptUserById(Long id);
    public int deleteSysOrgDeptUserByUserId(@Param("userId") Long userId);

    /**
     * 批量删除用户组织部门岗位
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSysOrgDeptUserByIds(Long[] ids);
}
